/* eslint-disable no-debugger */
import { ApiResponse, User, UserProfile } from '@/types/data'
import { RootThunkAction } from '@/types/store'
import request from '@/utils/request'

// 获取用户信息
export const getUser = (): RootThunkAction => {
  return async (dispatch) => {
    //   Token:本接口返回值的类型
    const res = await request.get<ApiResponse<User>>('/user')

    // 保存redux
    dispatch({
      type: 'profile/getUser',
      payload: res.data.data
    })
  }
}

// 获取用户档案信息
export const getUserProfile = (): RootThunkAction => {
  return async (dispatch) => {
    //   Token:本接口返回值的类型
    const res = await request.get<ApiResponse<UserProfile>>('/user/profile')

    // 保存redux
    // todo: 要找产品确认，要和后端讨论
    res.data.data.intro = res.data.data.intro || '未设置'
    dispatch({ type: 'profile/getUserProfile', payload: res.data.data })
  }
}

/**
 *
 * @param key 要修改的属性名
 * @param value 要修改的具体的值
 * @returns
 */
export const updateUserProfile = (key:string, value:string):RootThunkAction => {
  return async (dispatch) => {
    //   Token:本接口返回值的类型<ApiResponse<UserProfile>>
    // post，delete, get, put(整个替换), patch(部分修改)
    await request.patch('/user/profile', {
      [key]: value
    })
    // 获取最新的信息
    dispatch(getUserProfile())
  }
}

export const updateUserPhoto = (fd: FormData):RootThunkAction => {
  return async (dispatch) => {
    //   Token:本接口返回值的类型<ApiResponse<UserProfile>>
    // post，delete, get, put(整个替换), patch(部分修改)
    await request.patch('/user/photo', fd)
    // 获取最新的信息
    dispatch(getUserProfile())
  }
}
